// 给定一个非负整数，你至多可以交换一次数字中的任意两位。返回你能得到的最大值。

// 示例 1 :
// 输入: 2736
// 输出: 7236
// 解释: 交换数字2和数字7。

// 示例 2 :
// 输入: 9973
// 输出: 9973
// 解释: 不需要交换。

// 注意:
//     给定数字的范围是 [0, 108]

/////思路：找出最大的数并且最大的数是最后一个，然后跟第一个最小的数交换

/**
 * @param {number} num
 * @return {number}
 */
var maximumSwap = function(num) {
    let str = Array.from(num.toString());
    let posArray = new Array(10).fill(-1);
    for(let i = 0; i < str.length; i++) {
        posArray[str[i] - '0'] = i; ///定位每个数出现的最后位置
    }
    console.log(posArray);
    for(let i = 0; i < str.length; i++) {
        for(let j = 9; j > str[i] - "0"; j--) {
            if (posArray[j] > i) {
                let temp = str[posArray[j]];
                str[posArray[j]] = str[i];
                str[i] = temp;
                return Number(str.join(""));
            }
        }
    }
    return Number(str.join(""));
};
console.log(maximumSwap(8736));

